/**
 * 
 */
package mm.back.filtros;

import java.io.Serializable;
import java.util.Date;

import org.hibernate.Query;

/**
 * @author PUSDERKIS
 *
 */
public class VentasFiltro implements HibernateHQLFilter, Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 6936918036427365089L;

	private Long idVendedor;
	
	private Long idVenta;
	
	private Date fechaInicio;
	
	private Date fechaFin;

	/**
	 * @return the fechaInicio
	 */
	public Date getFechaInicio() {
		return fechaInicio;
	}

	/**
	 * @param fechaInicio the fechaInicio to set
	 */
	public void setFechaInicio(Date fechaInicio) {
		this.fechaInicio = fechaInicio;
	}

	/**
	 * @return the fechaFin
	 */
	public Date getFechaFin() {
		return fechaFin;
	}

	/**
	 * @param fechaFin the fechaFin to set
	 */
	public void setFechaFin(Date fechaFin) {
		this.fechaFin = fechaFin;
	}

	/** 
	 * @see mm.back.filtros.HibernateHQLFilter#getWhereClause(java.lang.String[])
	 */
	public String getWhereClause(String... alias) {
		 
		String aliasVentas = alias[0] + ".";
		String AND = " AND "; 
		StringBuffer sb = new StringBuffer();
		
		if (getFechaFin() != null){
			sb.append(AND);
			sb.append("DATEDIFF(");
			sb.append(aliasVentas)
			.append("fecha,:fechaFin) <= 0");
		}
		if (getFechaInicio() != null){
			sb.append(AND);
			sb.append("DATEDIFF(");
			sb.append(aliasVentas)
			.append("fecha,:fechaIni) >= 0");
		}
		if (getIdVendedor() != null && getIdVendedor() > 0){
			sb.append(AND);
			sb.append(aliasVentas)
			.append("vendedor.id = :idVendedor");
		}
		
		if (getIdVenta() != null && getIdVenta() > 0){
			sb.append(AND);
			sb.append(aliasVentas)
			.append("id = :idVenta");
		}
		
		return sb.toString();
	}

	/** 
	 * @see mm.back.filtros.HibernateHQLFilter#setWhereParameters(org.hibernate.Query)
	 */
	public void setWhereParameters(Query query) {
		if (getFechaFin() != null){
			query.setDate("fechaFin", getFechaFin());
		}
		if (getFechaInicio() != null){
			query.setDate("fechaIni", getFechaInicio());
		}
		if (getIdVendedor() != null && getIdVendedor() > 0){
			query.setLong("idVendedor",getIdVendedor());
		}
		
		if (getIdVenta() != null && getIdVenta() > 0){
			query.setLong("idVenta", getIdVenta());
		}
	}

	/**
	 * @return the idVendedor
	 */
	public Long getIdVendedor() {
		return idVendedor;
	}

	/**
	 * @param idVendedor the idVendedor to set
	 */
	public void setIdVendedor(Long idVendedor) {
		this.idVendedor = idVendedor;
	}

	/**
	 * @return the idVenta
	 */
	public Long getIdVenta() {
		return idVenta;
	}

	/**
	 * @param idVenta the idVenta to set
	 */
	public void setIdVenta(Long idVenta) {
		this.idVenta = idVenta;
	}

	/**
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append("VentasFiltro [idVendedor=");
		builder.append(idVendedor);
		builder.append(", idVenta=");
		builder.append(idVenta);
		builder.append(", fechaInicio=");
		builder.append(fechaInicio);
		builder.append(", fechaFin=");
		builder.append(fechaFin);
		builder.append("]");
		return builder.toString();
	}
	
	

}
